#pragma once

#include "glare.d3d11.Prerequisites.h"
#include "glare.d3d11.GpuResourceFactory.h"
#include "Glare.Core.GpuBuffer.h"

namespace Glare {

	class D3D11GpuBuffer : public GpuBuffer, public D3D11GpuResourceInterface
	{
	public : D3D11GpuBuffer(D3D11GpuResourceFactory* factory, const GpuBufferDescription& description);
	public : virtual ~D3D11GpuBuffer();

	public : virtual Interface* _GetInterface();

	public : virtual GpuResourceFactory* GetFactory() const;

	public : ID3D11Buffer* GetD3DBuffer() const;
	public : D3D11GpuResourceFactory* GetD3DFactory() const;
	public : virtual ID3D11Resource* GetD3DResource();

	private : D3D11GpuResourceFactory* _factory;
	private : ID3D11Buffer* _d3d_buffer;
	};
}
